#!/bin/bash

# -----------------------------
# 微信小程序上传脚本 (miniprogram-ci)
# -----------------------------
# 使用方式:
#   ./upload.sh -a <appid> -k <private_key> -p <project_path> -v <version> -d <desc>
# 示例:
#   ./upload.sh -a wx1234567890abcdef -k ./private.key -p /path/to/project -v 1.0.1 -d "修复了一些BUG"
# -----------------------------

# 解析命令行参数
while getopts "a:k:p:v:d:h" opt; do
  case ${opt} in
    a) APPID="$OPTARG" ;;             # 微信小程序 AppID
    k) PRIVATE_KEY_PATH="$OPTARG" ;;  # 私钥文件路径
    p) PROJECT_PATH="$OPTARG" ;;      # 小程序项目路径
    v) VERSION="$OPTARG" ;;           # 版本号
    d) DESC="$OPTARG" ;;              # 描述信息
    h) # 显示帮助信息
      echo "使用方式: $0 -a <appid> -k <private_key> -p <project_path> -v <version> -d <desc>"
      echo "示例: ./upload.sh -a wx1234567890abcdef -k ./private.key -p /path/to/project -v 1.0.1 -d '修复了一些BUG'"
      exit 0 ;;
    \?) echo "❌ 无效参数: -$OPTARG"; exit 1 ;;
  esac
done

# -----------------------------
# 参数校验
# -----------------------------
if [[ -z "$APPID" || -z "$PRIVATE_KEY_PATH" || -z "$PROJECT_PATH" || -z "$VERSION" || -z "$DESC" ]]; then
    echo "❌ 参数不足！"
    echo "使用方式: $0 -a <appid> -k <private_key> -p <project_path> -v <version> -d <desc>"
    echo "示例: ./upload.sh -a wx1234567890abcdef -k ./private.key -p /path/to/project -v 1.0.1 -d '修复了一些BUG'"
    exit 1
fi

# -----------------------------
# 检测 miniprogram-ci 是否安装
# -----------------------------
if ! command -v miniprogram-ci &> /dev/null; then
    echo "⚠️  检测到 miniprogram-ci 未安装，正在安装..."
    npm install -g miniprogram-ci || { echo "❌ miniprogram-ci 安装失败"; exit 1; }
    echo "✅ miniprogram-ci 安装完成！"
fi

# -----------------------------
# 确保 project.config.json 存在
# -----------------------------
CONFIG_FILE="$PROJECT_PATH/project.config.json"
if [[ ! -f "$CONFIG_FILE" ]]; then
    echo "❌ 错误: 找不到项目配置文件 $CONFIG_FILE"
    exit 1
fi

# -----------------------------
# 执行上传
# -----------------------------
echo "🚀 开始上传微信小程序..."
echo "📌 AppID: $APPID"
echo "📌 版本号: $VERSION"
echo "📌 描述: $DESC"
echo "📌 项目路径: $PROJECT_PATH"
echo "📌 私钥路径: $PRIVATE_KEY_PATH"

npx miniprogram-ci upload \
    --appid "$APPID" \
    --pp "$PROJECT_PATH" \
    --pkp "$PRIVATE_KEY_PATH" \
    --pt "miniProgram" \
    --uv "$VERSION" \
    --ud "$DESC" \
    -r 1

# -----------------------------
# 结果检查
# -----------------------------
if [[ $? -ne 0 ]]; then
    echo "❌ 上传失败，请检查日志！"
    exit 1
else
    echo "✅ 小程序版本 $VERSION 上传成功！"
fi
